home *** CD-ROM | disk | FTP | other *** search
/ BUG 10 / BUGCD1998_01.ISO / runtime / _nt4sp3 / nt4sp3_i.exe / [0] / netcfg.dll / TEXT / NCPARULE < prev   
Text File  |  1997-05-01  |  18KB  |  1,329 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282.  
  283.  
  284.  
  285.  
  286.  
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338.  
  339.  
  340.  
  341.  
  342.  
  343.  
  344.  
  345.  
  346.  
  347.  
  348.  
  349.  
  350.  
  351.  
  352.  
  353. ( (devDerived X basic)
  354.     (cut)
  355. )
  356.  
  357. ( (devDerived X X)
  358.     (cut)
  359. )
  360. ( (devDerived X Y)
  361.     (devClass X Y _)
  362.     (cut)
  363. )
  364.  
  365. ( (devDerived X Y)
  366.     (devClass X Z _)
  367.     (cut)
  368.     (devDerived Z Y)
  369. )
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378. ( (ifupper Ifname Ifclass)
  379.     (devType Ifname _ Ifclass _)
  380. )
  381. ( (ifupper Ifname Ifclass)
  382.     (devIf _ Ifname Ifclass _ _)
  383. )
  384.  
  385.  
  386.  
  387. ( (iflower Ifname Ifclass)
  388.     (devType Ifname Usage _ Ifclass)
  389.     (not (eq Usage adapter))  
  390. )
  391.  
  392.  
  393.  
  394.  
  395.  
  396. ( (ifpresent _ Dev Type Type Objname)
  397.     (present Dev Type Objname _)
  398. )
  399. ( (ifpresent upper Dev Dev Owner Objname)
  400.     (devIf Owner Dev _ Objname _)
  401.     (present Owner _ _ _)
  402. )
  403.  
  404. ( (ifbind Dev Method)
  405.     (devBind Dev _ _ _ Method)
  406. )
  407. ( (ifbind Dev Method)
  408.     (devIf _ Dev _ _ Method)
  409. )
  410.  
  411.  
  412. ( (ifusage Kind Usage)
  413.     (devType Kind Usage _ _)
  414. )
  415. ( (ifusage Kind Usage)
  416.     (devIf Owner Kind _ _ _)
  417.     (devType Owner Usage _ _)
  418. )
  419.  
  420.  
  421.  
  422.  
  423.  
  424. ( (canbind X Y Xexcl Yexcl Value)
  425.     (iflower X Lower)
  426.     (ifupper Y Upper)
  427.     (printif (nl "Try: " X " binding to " Y))
  428.     (bindable Blower Bupper Xexcl Yexcl Value)
  429.     (printif (nl "Bind (L): is " Lower " derived from " Blower))
  430.     (devDerived Lower Blower)
  431.     (printif (nl "Bind (U): is " Upper " derived from " Bupper))
  432.     (devDerived Upper Bupper)
  433.     (printif ("<- Success!"))
  434. )
  435.  
  436.  
  437.  
  438. ( (bindpair Dev1 Dev2 (Dev1 Dev2 Excl1 Excl2 Value))
  439.     (ifpresent lower Dev1 Type1 _ _)
  440.     (ifpresent upper Dev2 Type2 _ _)
  441.     (not (eq Dev1 Dev2))
  442.     (canbind Type1 Type2 Excl1 Excl2 Value)
  443.     (printif (nl))
  444. )
  445.  
  446.  
  447.  
  448. ( (getbindings List)
  449.     (findall L (bindpair X Y L) List)
  450. )
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457. ( (retractbindings)
  458.     (retract (binding _ _ _ _ _))
  459.     (fail)
  460. )
  461.  
  462. ( (assertbindings L)
  463.     (not (retractbindings))
  464.     (getbindings L)
  465.     (bindassert L)
  466. )
  467. ( (bindassert () )
  468. )
  469.  
  470.  
  471.  
  472.  
  473.  
  474.  
  475.  
  476. ( (bindassert ((Bindfrom Bindto Exclfrom Exclto Value)|T) )
  477.     (assertz (binding Bindfrom Bindto Exclfrom Exclto Value))
  478.     (bindassert T)
  479. )
  480.  
  481. ( (createbindings)
  482.     (assertbindings L)
  483. )
  484.  
  485.  
  486.  
  487.  
  488. ( (makebindstrings)
  489.     
  490.  
  491.  
  492.  
  493.  
  494.  
  495.     
  496.     (collapseDuplicateTypes)
  497.  
  498.     
  499.     (not (userExtensions createbindings))
  500.     (createbindings)
  501.  
  502.     
  503.     (not (userExtensions pruneexclusive))
  504.     (prunexclusive)
  505.  
  506.     
  507.     (not (userExtensions allbindstrings))
  508.     (allbindstrings)
  509.  
  510.     
  511.     (explodeDuplicateTypes)
  512.  
  513.     (not (userExtensions endofquery))
  514.     (tracestat)
  515. )
  516.  
  517.  
  518.  
  519.  
  520.  
  521.    
  522. ( (collapseDuplicateTypes)
  523.     (not (determineCollapsibleTypes))
  524. )
  525.  
  526.    
  527.    
  528.    
  529. ( (determineCollapsibleTypes)
  530.  
  531.     
  532.     
  533.     (present ProductId Typename Objectname Registrykey)
  534.     (present ProductId2 Typename Objectname2 Registrykey2)
  535.     (not (eq ProductId ProductId2))
  536.     (not (collapsibleType Typename _ _ _))
  537.  
  538.     
  539.     (string_from Typename StrTypename)
  540.     (string_concat StrTypename "Dummy" StrDummyTypename)
  541.     (atom_from StrDummyTypename DummyTypename)
  542.     (string_from Objectname StrObjname)
  543.     (string_concat StrObjname "_DummyObjName" DummyObjectName)
  544.     (string_concat "Dummy_Reg_Key_for_" StrObjname DummyRegKey)
  545.  
  546.     
  547.     (assertz (collapsibleType Typename DummyTypename DummyObjectName DummyRegKey))
  548.  
  549.     
  550.     (not (collapseDupType Typename DummyTypename))
  551.  
  552.     
  553.     (assertz (present DummyTypename Typename DummyObjectName DummyRegKey))
  554.     (fail)
  555. )
  556.  
  557.    
  558. ( (collapseDupType Typename PseudoTypeName)
  559.     (present ProductId Typename Objectname Registrykey)
  560.     (assertz (dupType PseudoTypeName ProductId Typename Objectname Registrykey))
  561.     (retract (present ProductId Typename Objectname Registrykey))
  562.     (fail)
  563. )
  564.  
  565.    
  566. ( (explodeDuplicateTypes)
  567.     (not (explodeEachType))
  568. )
  569.    
  570. ( (explodeEachType)
  571.     (collapsibleType RealTypeName DummyTypeName DummyObjectName DummyRegistryKeyName)
  572.     (explodeDup DummyTypeName DummyObjectName)
  573. )
  574.  
  575.    
  576.    
  577. ( (explodeDup Typename Textname)
  578.     (bindstring Owner Interface Objectname PathAtomList BindString ExportString)
  579.     (member Typename PathAtomList)
  580.     (retract (bindstring Owner Interface Objectname PathAtomList BindString ExportString))
  581.     (not (assertOnePer Typename Textname Owner Interface Objectname PathAtomList BindString ExportString))
  582.     (fail)
  583. )
  584.  
  585.    
  586.    
  587. ( (assertOnePer Typename Textname Owner Interface Objectname PathAtomList BindString ExportString)
  588.     (dupType Typename ProductId RealType Objname Registrykey)
  589.     (list_subst Typename PathAtomList ProductId NewAtomList)
  590.     (string_subst Textname BindString Objname NewBindString)
  591.     (string_subst Textname ExportString Objname NewExportString)
  592.     (assertz (bindstring Owner Interface Objectname NewAtomList NewBindString NewExportString))
  593.     (fail)
  594. )
  595.  
  596.  
  597.  
  598. ( (prunexclusive)
  599.     (not(pruneupper))
  600.     (not(prunelower))
  601. )
  602. ( (pruneupper)
  603.     (binding From  To  exclusive _ Value)
  604.     (binding From  To2 Excl2     _ Value2)
  605.     (not (eq To To2))
  606.     (printif (nl "Contention (U): " To "<->" To2 nl))
  607.     (pruneup From To To Value Value2)
  608.     (fail)
  609. )
  610. ( (prunelower)
  611.     (binding From  To _ exclusive Value)
  612.     (binding From2 To _ Excl2      Value2)
  613.     (not (eq From From2))
  614.     (printif (nl "Contention (L): " From "<->" From2 nl))
  615.     (prunelow From From2 To Value Value2)
  616.     (fail)
  617. )
  618. ( (pruneup From To To2 Value Value2)
  619.     (iless Value2 Value)
  620.     (cut)
  621.     (printif (nl "Retracted: " From "->" To2 nl))
  622.     (retract (binding From To2 _ _ _))
  623. )
  624. ( (pruneup From _ To _ _)
  625.     (printif (nl "Retracted: " From "->" To nl))
  626.     (retract (binding From To _ _ _))
  627. )
  628. ( (prunelow _ From To Value Value2)
  629.     (iless Value2 Value)
  630.     (cut)
  631.     (printif (nl "Retracted: " From "->" To nl))
  632.     (retract (binding From To _ _ _))
  633. )
  634. ( (prunelow From _ To _ _)
  635.     (printif (nl "Retracted: " From "->" To nl))
  636.     (retract (binding From To _ _ _))
  637. )
  638.  
  639.   
  640. ( (pruneblocked)
  641.   (printif (nl "Blocked checking begun..." nl))
  642.   (not (pruneblock))
  643.   (printif (nl "Blocked checking ended." nl))
  644. )
  645.  
  646.   
  647.  
  648. ( (pruneblock)
  649.   (bindstring Owner Name Objname Devlist Bstr Estr)
  650.   (isblocked (Name|Devlist))
  651.   (printall (nl "Blocked: " Name " = " Bstr nl))
  652.   (retract (bindstring Owner Name Objname Devlist Bstr Estr))
  653.   (fail)
  654. )
  655.  
  656.   
  657.  
  658.   
  659. ( (isblocked (Dev))
  660.    (atom Dev)
  661.    (cut)
  662.    (fail)
  663. )
  664.  
  665.   
  666. ( (isblocked (Dev Nextdev|Rest))
  667.   (isblockedpair Dev Nextdev)
  668.   (cut)  
  669. )
  670.  
  671.   
  672. ( (isblocked (Dev Nextdev|Rest))
  673.   (isblocked (Dev|Rest))
  674.   (printif (nl "Blocked pair: " Dev " and " Nextdev nl))
  675.   (cut)
  676. )
  677.  
  678.   
  679. ( (isblocked (Dev Nextdev|Rest))
  680.   (isblocked (Nextdev|Rest))
  681. )
  682.  
  683.   
  684.  
  685. ( (isblockedpair Dev1 Dev2)
  686.     (block Lowclass Upclass)
  687.     (ifpresent lower Dev1 Type1 _ _)
  688.     (ifpresent upper Dev2 Type2 _ _)
  689.     (iflower Type1 Lower)
  690.     (ifupper Type2 Upper)
  691.     (devDerived Lower Lowclass)
  692.     (devDerived Upper Upclass)
  693.     (cut)
  694. )
  695.  
  696.  
  697.  
  698.  
  699.  
  700.  
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711.  
  712. ( (allbindstrings)
  713.     (not (allbindstrhelp))
  714. )
  715.  
  716. ( (allbindstrhelp)
  717.     (ifpresent _ Name _ _ _)
  718.     (assertbindstrings Name)
  719.     (fail)
  720. )
  721.  
  722. ( (assertbindstrings Name)
  723.     (not (retractbindstrs Name))
  724.     (getbinddevlists Name List)
  725.     (printif (nl "asserting binding for: " Name "..."))
  726.     (bindstrassert Name List)
  727.     (printif ("done" nl))
  728. )
  729.  
  730. ( (retractbindstrs Name)
  731.     (retract (bindstring _ Name _ _ _ _))
  732.     (fail)
  733. )
  734.  
  735. ( (getbinddevlists Name Strlist)
  736.     (allbinds Name Name (Name Bindlist))
  737.     (bindflatten () Bindlist () Strlist)
  738. )
  739.  
  740.    
  741. ( (isendpoint Name)
  742.     (ifpresent upper Name _ _ _)
  743.     (ifupper Name Upperclass)
  744.     (devClass Upperclass _ yes)
  745. )
  746.   
  747. ( (isstream Name)
  748.     (ifpresent _ Name Type _ _)
  749.     (ifbind Type streams)
  750. )
  751.  
  752.   
  753.  
  754.  
  755.  
  756.  
  757.  
  758.  
  759.  
  760.  
  761.   
  762. ( (allbinds _ Name (Name))
  763.     (ifpresent _ Name Kind _ _)
  764.     (ifusage Kind adapter)
  765.     (cut)
  766. )
  767.  
  768.   
  769.   
  770.   
  771.   
  772.   
  773.  
  774. ( (allbinds Basename Name (Name|((Stream))))
  775.     (not (eq Basename Name))
  776.     (isendpoint Name)
  777.     (ifpresent _ Name _ Owner _)
  778.     (binding Owner Stream _ _ _)
  779.     (cut)
  780. )
  781.  
  782.   
  783.   
  784.  
  785. ( (allbinds Basename Name (Name))
  786.     (not (eq Basename Name))
  787.     (isendpoint Name)
  788.     (cut)
  789. )
  790.  
  791.   
  792.  
  793. ( (allbinds Basename Name (Name Outlist))
  794.     (ifpresent _ Name _ Owner _)
  795.     (findall To (binding Owner To _ _ _) Tolist)
  796.     (allbindlist Basename Owner Tolist Outlist)
  797. )
  798.  
  799. ( (allbindlist _ _ () ()) )
  800. ( (allbindlist Basename Name (Hto|Tto) (Hout|Tout))
  801.     (allbinds Basename Hto Hout)
  802.     (allbindlist Basename Hto Tto Tout)
  803. )
  804.  
  805.   
  806.  
  807. ( (ownerlist () L L) )
  808. ( (ownerlist (Dev|T) L Lout)
  809.     (devIf Owner Dev _ _ _)
  810.     (cut)
  811.     (append L (Owner) L2)
  812.     (ownerlist T L2 Lout)
  813. )
  814. ( (ownerlist (Dev|T) L Lout)
  815.     (append L (Dev) L2)
  816.     (ownerlist T L2 Lout)
  817. )
  818.  
  819. ( (dobindstrassert Owner Name Objname Devlist Fullbindstr Fullexportstr)
  820.     (ownerlist Devlist () Ownerlist)
  821.     (not (isblocked (Name|Ownerlist)))
  822.     (printif (nl "Asserting bindstring: " Name " = " Fullbindstr ","
  823.               nl "                        export = " Fullexportstr nl))
  824.     (assertz (bindstring Owner Name Objname Ownerlist Fullbindstr Fullexportstr))
  825.     (cut)
  826. )
  827.  
  828. ( (dobindstrassert _ _ _ _ _ _)
  829. )
  830.  
  831.   
  832.  
  833. ( (bindstrassert Name (Devlist|T))
  834.     (makedevstring import Devlist "" Bindstr)
  835.     (makedevstring export (Name|Devlist) "" Exportstr)
  836.     (string_concat "\Device\" Bindstr Fullbindstr)
  837.     (string_concat "\Device\" Exportstr Fullexportstr)
  838.     (ifpresent _ Name _ Owner Objname)
  839.     (dobindstrassert Owner Name Objname Devlist Fullbindstr Fullexportstr)
  840.     (bindstrassert Name T)
  841. )
  842.  
  843.   
  844.  
  845. ( (makedevstring _ () Bindstr Bindstr)
  846.     (cut)   
  847. )
  848.  
  849.   
  850. ( (makedevstring _ (Dev|Tail) Oldstr Newstr)
  851.     (ifpresent _ Dev _ _ Objectname)
  852.     (ifbind Dev bare)
  853.     (cut)
  854.     (string_concat Oldstr Objectname Newstr)
  855. )
  856.  
  857.   
  858.  
  859. ( (makedevstring _ (Dev|Tail) Oldstr Newstr)
  860.     (ifpresent _ Dev Devtype _ _)
  861.     (devBind Devtype _ _ no _)
  862.     (cut)
  863.     (makedevstring _ Tail Oldstr Newstr)
  864. )
  865.   
  866. ( (makedevstring _ (Dev) Oldstr Newstr)
  867.     (atom Dev)
  868.     (cut)
  869.     (ifpresent _ Dev _ _ Objectname)
  870.     (cut)
  871.     (string_concat Oldstr Objectname Newstr)
  872. )
  873.  
  874.   
  875.   
  876.  
  877. ( (makedevstring export (Dev Devnext|Tail) Oldstr Newstr)
  878.     (isendpoint Dev)
  879.     (isstream Devnext)
  880.     (cut)
  881.     (makedevstring _ (Devnext Dev) Oldstr Newstr)
  882. )
  883.  
  884.   
  885. ( (makedevstring _ (Dev Devnext|Tail) Oldstr Newstr)
  886.     (isstream Devnext)
  887.     (cut)
  888.     (makedevstring _ (Devnext Dev|Tail) Oldstr Newstr)
  889. )
  890.   
  891. ( (makedevstring _ (Dev|Tail) Oldstr Newstr)
  892.     (isendpoint Dev)
  893.     (cut)
  894.     (ifpresent _ Dev _ _ Objectname)
  895.     (string_concat Oldstr Objectname Newstr)
  896. )
  897.  
  898.   
  899. ( (makedevstring _ (Dev|Tail) Oldstr Newstr)
  900.     (ifpresent _ Dev Devtype _ Objectname)
  901.     (cut)
  902.     (ifbind Devtype Method)
  903.     (getsep Method Sep)
  904.     (cut)
  905.     (string_concat Oldstr Objectname T1)
  906.     (string_concat T1 Sep T2)
  907.     (makedevstring _ Tail T2 Newstr)
  908. )
  909.  
  910. ( (getsep simple "_")
  911.   (cut)
  912. )
  913. ( (getsep _ "\") )
  914.  
  915.    
  916.  
  917. ( (bindflatten _ () List List) )   
  918.  
  919. ( (bindflatten Devlist (Dev|List) Inlist Outlist)
  920.     (atom Dev)     
  921.     (cut)
  922.     (append Devlist (Dev) Devnew)
  923.     (bindflatten Devnew List Inlist Outlist)
  924. )
  925. ( (bindflatten Devlist ((Dev)|T) Inlist Outlist)
  926.     (atom Dev)
  927.     (cut)
  928.     (append Devlist (Dev) Devnew)
  929.     (bindflatten Devlist T (Devnew|Inlist) Outlist)
  930. )
  931. ( (bindflatten Devlist (H|T) Inlist Outlist)
  932.     (bindflatten Devlist H Inlist List1)
  933.     (bindflatten Devlist T List1 Outlist)
  934. )
  935.  
  936.  
  937.  
  938. ( (makebindlist List)
  939.     (findall (From To) (binding From To _ _ _) List)
  940. )
  941.  
  942.  
  943.  
  944.  
  945. ( (string_subst Tok Str Newtok Newstr)
  946.     (substr Tok Str)
  947.     (string_break Tok Str Left Right)
  948.     (string_concat Left Newtok Str1)
  949.     (string_concat Str1 Right Newstr)
  950.     (cut)
  951. )
  952.  
  953. ( (string_subst Tok Str _ Str)
  954. )
  955.  
  956.  
  957.  
  958.  
  959. ( (list_subst _ () _ ())
  960.     (cut)
  961. )
  962. ( (list_subst Tok (Tok|T) Newtok (Newtok|LT))
  963.     (cut)
  964.     (list_subst Tok T Newtok LT)
  965. )
  966. ( (list_subst Tok (H|T) Newtok (H|LT))
  967.     (list_subst Tok T Newtok LT)
  968. )
  969.  
  970.  
  971.  
  972.  
  973. ( (substr Sub Str)
  974.     
  975.     
  976.     
  977.     (string_break Sub Str Left Right)
  978.     (not (eq Str Left))
  979. )
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992. ( (printif List)
  993.     (printctl on)
  994.     (cut)
  995.     (printall List)
  996. )
  997. ( (printif _) )
  998.  
  999. ( (displayif Thing)
  1000.     (printctl on)
  1001.     (cut)
  1002.     (display Thing)
  1003. )
  1004. ( (displayif _) )
  1005.  
  1006. ( (pctl on)
  1007.     (cut)
  1008.     (asserta (printctl on))
  1009. )
  1010. ( (pctl off)
  1011.     (retract (printctl _))
  1012. )
  1013.  
  1014. ( (pstdout on)
  1015.     (cut)
  1016.     (asserta (printstdout on))
  1017. )
  1018. ( (pstdout off)
  1019.     (retract (printstdout _))
  1020. )
  1021.  
  1022. ( (statctl on)
  1023.     (cut)
  1024.     (asserta (statctl on))
  1025. )
  1026. ( (statctl off)
  1027.     (retract (statctl _))
  1028. )
  1029.  
  1030. ( (tostring nl "")
  1031.     (cut)
  1032.     (tracenl)
  1033.     
  1034. )
  1035.  
  1036. ( (tostring X X)
  1037.     (string X)
  1038.     (cut)
  1039. )
  1040. ( (tostring X Y)
  1041.     (atom X)
  1042.     (cut)
  1043.     (string_from X Y)
  1044. )
  1045. ( (tostring X Y)
  1046.     (integer X)
  1047.     (cut)
  1048.     (string_from X Y)
  1049. )
  1050. ( (tostring X "<_var_>")
  1051.     (var X)
  1052. )
  1053. (printall ())
  1054.  
  1055. ( (printall (H|T))
  1056.     (tostring H Sh)
  1057.     (tracewrites Sh)
  1058.     
  1059.     (printall T)
  1060. )
  1061.  
  1062.  
  1063.  
  1064.  
  1065. ((tracestat)
  1066.  (statctl on)
  1067.  (cut)
  1068.  (space_left Heap Str Dyn Subst Trail Temp)
  1069.  (alloc_percent 1 HeapPct)
  1070.  (dbg_remains Heap HeapPct "heap")
  1071.  (alloc_percent 4 StrPct)
  1072.  (dbg_remains Str StrPct "strings")
  1073.  (alloc_percent 2 DynPct)
  1074.  (dbg_remains Dyn DynPct "contol stack")
  1075.  (alloc_percent 6 SubstPct)
  1076.  (dbg_remains Subst SubstPct "substitutions")
  1077.  (alloc_percent 5 TrailPct)
  1078.  (dbg_remains Trail TrailPct "trail")
  1079.  (alloc_percent 3 TempPct)
  1080.  (dbg_remains Temp TempPct "temp")
  1081. )
  1082.  
  1083. ((tracestat))
  1084.  
  1085. ((dbg_remains Bytes Percent Zone)
  1086.  (printall ("NCPA/SP: There remains " Bytes " bytes for the " Zone
  1087.              "; percent used: " Percent "%" nl))
  1088. )
  1089.  
  1090.  
  1091.  
  1092.  
  1093.  
  1094.  
  1095.  
  1096.  
  1097. ((is_list L )(nonvar L)(eq L (X|Y)))
  1098. (is_list ())
  1099.  
  1100.  
  1101. ((not X)
  1102.  X (cut) (fail))
  1103. ((not X))
  1104.  
  1105.  
  1106. ((member X (X|Y))
  1107. )
  1108. ((member X (A|B))
  1109.  (member X B)
  1110. )
  1111.  
  1112.  
  1113. ((eq X X))
  1114.  
  1115.  
  1116. ((diff X X)(cut)(fail)
  1117. )
  1118. ((diff X Y))
  1119.  
  1120.  
  1121. ((append (A|X) Y (A|Z))
  1122.  (append X Y Z)
  1123. )
  1124. ((append () X X))
  1125.  
  1126.  
  1127.  
  1128. ((nrev (X|Y) U)
  1129.  (nrev Y L)(append L (X) U)
  1130. )
  1131. ((nrev ()()))
  1132.  
  1133.  
  1134. ((bench)
  1135.  (clock T1)
  1136.  (n_unifications Nu1)
  1137.  (nrev (1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0)L)
  1138.  (clock T2)
  1139.  (n_unifications Nu2)
  1140.  (iminus T2 T1 Tdiff)
  1141.  (iminus Nu2 Nu1 Nudiff)
  1142.  (display L)(nl)
  1143.  (display Nudiff)(writes " unifications in ")
  1144.  (display Tdiff)(writes " microseconds.")(nl)
  1145. )
  1146.  
  1147.  
  1148. ((all_facts (Predicate|Args) List)
  1149.  (first_clause Predicate Clause)
  1150.  (cut)
  1151.  (allfacts1 Clause Args List)
  1152. )
  1153. ((all_facts X ()))
  1154.  
  1155. ((allfacts1 Clause Args ((Pred|ArgsHead)|L))
  1156.  (body_clause Clause ((Pred|ArgsHead)))
  1157.  (unifies ArgsHead Args)
  1158.  (cut)
  1159.  (allfacts2  Clause Args L)
  1160. )
  1161.  
  1162. ((allfacts2 Clause Args L)
  1163.  (next_clause Clause Clause2)
  1164.  (cut)
  1165.  (allfacts1 Clause2 Args L)
  1166. )
  1167. ((allfacts2 Clause Args ()))
  1168.  
  1169.  
  1170.  
  1171.  
  1172. ((clause (Predicate|Args) Goals)
  1173.  (atom Predicate)
  1174.  (cut)
  1175.  (choose_clause Predicate Clause)
  1176.  (body_clause Clause ((Predicate|Args)|Goals))
  1177. )
  1178.  
  1179. ((clause (Predicate|Args) Goals)
  1180.  (predicate Predicate)
  1181.  (choose_clause Predicate Clause)
  1182.  (body_clause Clause ((Predicate|Args)|Goals))
  1183. )
  1184.  
  1185.  
  1186. ((predicate P) 
  1187.  (first_predicate Pred1) 
  1188.  (predicates_after Pred1 P )
  1189. )
  1190.  
  1191. ((predicates_after P P))
  1192. ((predicates_after Pred P)
  1193.  (next_predicate Pred Next)
  1194.  (predicates_after Next P)
  1195. )
  1196.  
  1197. ((choose_clause Predicate Clause)
  1198.  (first_clause Predicate Clause1)
  1199.  (clause_after Clause1 Clause)
  1200. )
  1201. (clause_after Clause1 Clause1)
  1202. ((clause_after Clause1 Clause)
  1203.  (next_clause Clause1 Clause2)
  1204.  (clause_after Clause2 Clause)
  1205. )
  1206.  
  1207.  
  1208. ((unifies X Y)(diff X Y)(cut)(fail))
  1209. ((unifies X Y))
  1210.  
  1211.  
  1212. ((retract (Head | Tail))
  1213.  (atom Head)
  1214.  (retract1 Head Tail)
  1215. )
  1216.  
  1217. ((retract1 Predicate Tail)
  1218.  (find_clause Predicate Clause)
  1219.  (body_clause Clause ((Predicate | Tail)) )
  1220.  (remove_clause Clause)
  1221. )
  1222.  
  1223. ((find_clause Predicate Clause)
  1224.  (first_clause Predicate Clause1)
  1225.  (find_clause1 Clause1 Clause)
  1226. )
  1227.  
  1228. (find_clause1 Clause_a Clause_a)
  1229. ((find_clause1 Clause_a Clause)
  1230.  (next_clause Clause_a Clause_b)
  1231.  (find_clause1 Clause_b Clause)
  1232. )
  1233.  
  1234.  
  1235.  
  1236. ((and))
  1237. ((and X | Y)
  1238.  X
  1239.  (and Y)
  1240. )
  1241.  
  1242. ((binary_or X _) X)
  1243. ((binary_or _ Y) Y)
  1244.  
  1245.  
  1246. ((or X|_) X)
  1247. ((or _|Y)(or | Y))
  1248.  
  1249.  
  1250. ((repeat))
  1251. ((repeat)(repeat))
  1252.  
  1253.  
  1254. ((statistics)
  1255.  (space_left Heap Str Dyn Subst Trail Temp)
  1256.  (there_remains Heap "heap")
  1257.  (there_remains Str "strings")
  1258.  (there_remains Dyn "contol stack")
  1259.  (there_remains Subst "substitutions")
  1260.  (there_remains Trail "trail")
  1261.  (there_remains Temp "temp")
  1262. )
  1263.  
  1264. ((there_remains Bytes Zone)
  1265.  (writes "There remains ")
  1266.  (display Bytes)
  1267.  (writes " bytes for the ")
  1268.  (writes Zone)
  1269.  (writes ".")
  1270.  (nl)
  1271. )
  1272.  
  1273.  
  1274. (list_nth 0 (X|_) X)
  1275. ((list_nth N (_|Y) X)
  1276.  (iminus N 1 N-1)
  1277.  (list_nth N-1 Y X)
  1278. )
  1279.  
  1280.  
  1281.  
  1282.  
  1283. ((sum 0 )(cut))
  1284. ((sum S X|Y)
  1285.  (sum S1| Y)
  1286.  (iplus S1 X S)
  1287. )
  1288.  
  1289.  
  1290.  
  1291.  
  1292.  
  1293.  
  1294. ((findall X G _)
  1295.  
  1296.  (temp_asserta (found mark))
  1297.  G
  1298.  (temp_asserta (found X))
  1299.  (fail)
  1300. )
  1301. ((findall _ _ L)
  1302.  (collect_found () M)
  1303.  (cut)
  1304.  (eq L M)
  1305.  
  1306. )
  1307.  
  1308. ((collect_found S L)
  1309.  (getnext X)
  1310.  (cut)
  1311.  (collect_found (X|S) L)
  1312. )
  1313. (collect_found L L)
  1314.  
  1315. ((getnext X)
  1316.  (retract (found X))
  1317.  (cut)
  1318.  (diff X mark)
  1319. )
  1320.  
  1321.  
  1322.  
  1323.  
  1324.  
  1325.  
  1326.  
  1327.  
  1328.  
  1329.